<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用公共文件
use think\Db;

/**
 * 通用化API接口数据输出
 * @param int       $status     业务状态码
 * @param string    $message    信息提示
 * @param []        $data       数据
 * @param int       $httpCode   http状态码
 * @return array
 */
function jsonShow($status, $message, $data=[], $httpCode = 200) {
    $data = [
        'status' => $status,
        'message' => $message,
        'data' => $data,
    ];
    return  json($data, $httpCode);
}

function return_json($code, $msg, $res)
{
    $data['code'] = $code;
    $data['msg'] = $msg;
    if($res !="" ){
        $data['data'] = $res;
    }
    return json_encode($data, JSON_UNESCAPED_UNICODE);
}

function setLog($logname,$data){

    $log_parh =  Env::get('root_path').'public/log/' .$logname . '/';

    $file_name = date('Ym') . ".log";
    if(is_array($data)){
        $text='【result】='.var_export($data,true).';';
    }else{
        $text = '【 动作 】：'.$data;
    }
    if(!is_dir($log_parh)){
        $flag = mkdir($log_parh,0777,true);
    }

    $contents = '['.date('Y-m-d H:i:s',time()).']'.'---'.PHP_EOL.$text;
    file_put_contents($log_parh.$file_name,$contents.PHP_EOL, FILE_APPEND);
    return;
}

function array_sort($array,$keys,$type='asc'){
    //$array为要排序的数组,$keys为要用来排序的键名,$type默认为升序排序
    $keysvalue = $new_array = array();
    foreach ($array as $k=>$v){
        $keysvalue[$k] = $v[$keys];
    }
    if($type == 'asc'){
        asort($keysvalue);
    }else{
        arsort($keysvalue);
    }
    reset($keysvalue);
    foreach ($keysvalue as $k=>$v){
        $new_array[$k] = $array[$k];
    }
    return $new_array;
}



//选择题计算得分
function getPickerScore($answer, $q_id) {
    $score = db::name('questions')->where('id',$q_id)->value('score');
    $score_arr = explode(',',$score);
    return (isset($score_arr[$answer]) && !empty($score_arr[$answer]))?$score_arr[$answer]:0;
}
//获取行业分值
// function getScoreExd($answer, $q_id) {
//     $score = db('questions')->where('id',$q_id)->value('score_exd');
//     $score_arr = explode(',',$score);
//     return isset($score_arr[$answer])?$score_arr[$answer]:0;
// }
function getScoreExd($answer, $q_id) {
    $parent_id = db('cate')->where('id',$answer)->value('parent_id');
    $score1 = db('cate')->where('id',$parent_id)->value('score1');
    return isset($score1)?$score1:0;
}

//基础版得分
function getLevelScoreOne($answer, $max_score, $score_map) {
    $temp = 0;
    if($answer > 0){
        if($answer/$max_score*$score_map < $score_map){
              $temp = round($answer/$max_score*$score_map,5);
        }else{
              $temp = $score_map;
        }
    }else{
          $temp = 0;
    }
    return $temp;
}
//基础版简评 比例 方案
function getBaseComparison($title,$coefficient,$code) {
    $difference = 0;
    $difference_text_one = "";
    $difference_text = "";
    $difference_hundred = "";

    $difference_array = [];

    $difference = ($title/$coefficient)-1;
    if($difference >= 1){
        $difference = 1;
    }

    if($difference > 0){
        $difference_text_one = "高于行业参考值";
    } else if ($difference == 0){
        $difference_text_one = "相似于行业参考值";
    }else{
        if($title == 0){
            if($code == '1.1'){
                $difference_text_one = "与参考值差距较大，希望2年内达到46项专利、软著、商标、电路布图";
            } else if ($code == '1.2'){
                    $difference_text_one = "与参考值差距较大，希望2年内达到26项发明专利";
            } else if ($code == '1.3'){
                    $difference_text_one = "与参考值差距较大，希望2年内达到4项自主研发核心发明专利";
            }else if ($code == '2.1'){
                    $difference_text_one = "与参考值差距较大，希望2年内达到109位研发人员";
            }else if ($code == '2.2'){
                    $difference_text_one = "低于行业参考值";
            }else if ($code == '2.3'){
                    $difference_text_one = "与参考值差距较大，希望2年内达到21%的研发人员占比";
            }
        }else{
            $difference_text_one = "低于行业参考值";
        }
    }

    if($difference < 0){
        if($code == '1.1' || $code == '1.2' || $code == '1.3'){
            $difference_text = "增量专利咨询, 提高营收与专利关联度";
      } else if ($code == '2.1' || $code == '2.2'){
            $difference_text = "按“四个一流”研发体系要求补足短板";
        } else if ($code == '2.3' || $code == '2.5' || $code == '2.6'){
            $difference_text = "财务分摊咨询, 协助完成股权债权融资";
      }
    }else{
        $difference_text = "已经满足目前要求";
    }
    $difference_hundred = $difference * 100;

    $difference_array["one"] = $difference_text_one;
    $difference_array["two"] = round($difference_hundred * 100 ) / 100 .'%';
    $difference_array["three"] = $difference_text;

    return $difference_array;
}

//创新管理简评
function getComparison($difference) {
    if ($difference < 0) {
        return '低于行业参考值';
    } else if ($difference > 0) {
        return '高于行业参考值';
    } else {
        return '相似于行业参考值';
    }
}

//创新管理方案
function getComparisonIos($one, $difference)
{
    if ($difference < 0) {
        if ($one == "1.1") {
            return '管理人职级、背景、方针制定、战略、内部交流频率、培训、演讲';
        } else if ($one == "1.2") {
            return '创新力即发明数量、专利申请量、专利侵权预警报告数量';
        } else if ($one == "1.3") {
            return '管理架构、顶层设计、IP管理、创新培训频率';
        } else if ($one == "1.4") {
            return '建立创新管理职责和知识产权管理职责架构及工作流程';
        } else if ($one == "2.1") {
            return '管理人职级、背景、方针制定、战略、内部交流频率、培训、演讲';
        } else if ($one == "2.2") {
            return '知识产权能力和产出包括发明、方案、新专利、FTO和侵权预警';
        } else if ($one == "2.3") {
            return '设立知识产权管理职责、高管和团队参与知识产权培训频次等';
        } else if ($one == "2.4") {
            return '知识产权决策流程，即明确职责和设立知识产权KPI';
        } else if ($one == "3.1") {
            return '外部趋势掌握流程，包括政策、产业、经济、技术、法律等趋势';
        } else if ($one == "3.2") {
            return '竞争对手情况掌握，包括产业、人才、技术、专利、重大事项等';
        } else if ($one == "3.3") {
            return '企业战略中创新战略和配套知识产权战略';
        } else if ($one == "3.4") {
            return '创新和知识产权战略与或企业发展目标的一致性';
        } else if ($one == "3.5") {
            return '创新和知识产权相关的目标及KPI体';
        } else if ($one == "3.6") {
            return '创新资源配置即政府、产业、科研、金融、服务机构等生态资源';
        } else if ($one == "4.1") {
            return '创新和知识产权的包括方案发明收集、IP申请、内部奖励等机制';
        } else if ($one == "4.2") {
            return '识别创新机会的能力，即对现状和机会的识别、了解、验证等机制';
        } else if ($one == "4.3") {
            return '创新概念和课题的产生、筛选、保护能力';
        } else if ($one == "4.4") {
            return '创新验证流程包括先进性、实用性、可操作性和商业化前景等';
        } else if ($one == "4.5") {
            return '创新样品开发能力即流程、规范、资源、知识产权、文案、协议';
        } else if ($one == "4.6") {
            return '创新方案部署即团队、财务、客户、伙伴、渠道、IP风险、价值';
        } else if ($one == "4.7") {
            return '创新管理能力即创新组合、协同效应、风险控制、定期评估';
        } else if ($one == "5.1") {
            return '内部、外部创新资源即人员、KPI体系、活动、财务、设施、工具';
        } else if ($one == "5.2") {
            return '持续创新及创新管理、知识产权管理、培训体系、持续提升体系';
        } else if ($one == "5.3") {
            return '创新文化即支持创新、支持外部合作、接受创新失败及试错';
        } else if ($one == "5.4") {
            return '创新沟通是否畅通包括内部沟通和外部沟通';
        } else if ($one == "5.5") {
            return '文案建立、批准、更新、监管、留存即档案管理';
        } else if ($one == "5.6") {
            return '创新正+逆向推理、场景、头脑风暴、人文、导航、培育、量化测评';
        } else if ($one == "6.1") {
            return '创新绩效包括知识产权转化率、专利商业化收入、KPI体系';
        } else if ($one == "6.2") {
            return '项目节点审核、止损机制；计划外创新审核流程及非技术创新流程';
        }

    } else if ($difference > 0) {
        return '满足目前要求';
    } else {
        return '基本满足目前要求';
    }
}



function ColorWhite(float $Alpha = 100)
{
    return new pChart\pColor(255,255,255,$Alpha);
}

function ColorBlack(float $Alpha = 100)
{
    return new pChart\pColor(0,0,0,$Alpha);
}


function isCheckMobile($value)
{
    $value = trim($value);
    $Regex = "/^1[3-9][0-9]\d{8}$/";
    if(preg_match($Regex,$value)) {
        return true;
    } else {
        return false;
    }
}

function isCheckEmail($email)
{
    $email = trim($email);
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return true;
    } else {
        return false;
    }
}